Subject: RFC Comment on NetBios

From: [email-masked] (Thang Do)
Date: Fri, 29 Jul 1994 13:27:37 -0700 (PDT)

Steve,

Here is my comment on your state diagram, particular for NetBios traffic.
First, it is legal for NetBios to establish more than one session for the same
pair (Destination, Source) MAC Address
For example, to estabish two NetBios sessions, on the LAN side:

                             ____
        =======             /    \               ========
        |     |------------/      \--------------|      |
        |     |            \      /              |      |
        =======             \____/               ========
        MAC=A                                    MAC=X
        Name=A                                   Name=X

  DA = Destination Address
  SA = Source Address
  DN = Destination Name
  SN = Source Name

        | NAME_QUERY(DA=Multicast,SA=A,DN=X,SN=A)      |
        | -------------------------------------------->|
        |                                              |
        |          NAME_RECOGIZED(DA=A,SA=X,DN=A,SN=X) |
        |<---------------------------------------------|
        |                                              |
        |                                              |
        |SABME                                         |
        |--------------------------------------------->|
        |                                          UA  |
        |<---------------------------------------------|
        |                                              |
        |                                              |
        |I-FRAME (Session Init)                        |
        |--------------------------------------------->|
        |                     I-FRAME (Session Confirm)|
        |<---------------------------------------------|
        |                                              |
        |                                              |
        |     NAME_QUERY(DA=Multicast,SA=X,DN=A,SN=X)  |
        |<---------------------------------------------| it is legal for
        |                                              | NetBios to do this
        |NAME_RECOGNIZED(DA=X,SA=A,DN=X,SN=A)          |
        |--------------------------------------------->|
        |                                              |
        |                       I-FRAME (Session Init) | remember NetBios will
        |<---------------------------------------------| use the same previous
        | I-FRAME (Session Confirm)                    | LLC connection for new
        |--------------------------------------------->| session
        |                                              |

Therefore, in order for DLSw to work in this kind of situation, the FSM may
have to modify. Here is my suggestion, please review it see if it is OK.
I mark "NEW" for new code, and "DELETE" for delete code

4.2.2.6 CIRCUIT_ESTABLISHED State

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
NEW   | Receive REACH_ACK    | if NETBIOS call     |                      |
NEW   |                      |   no action         |                      |
NEW   |                      | else                |                      |
NEW   |                      |   invalid event     |                      |
      +----------------------+---------------------+----------------------+
      | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive XIDFRAME     | DLC_XID             |                      |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive ICANREACH    | Send HALT_DL_NOACK  |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
      +----------------------+---------------------+----------------------+
      | DLC_CONTACTED        | Send CONTACT        | CONNECT_PENDING      |
   3  |                      | If UA is sent in    |                      |
   3  |                      | response to SABME:  |                      |
   3  |                      |   DLC_ENTER_BUSY    |                      |
   3  |                      | else:               |                      |
   3  |                      |   no action taken   |                      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
      | DLC_XID              | Send XIDFRAME       |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

4.2.2.8 CONNECTED State

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive INFOFRAME    | DLC_INFO            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive XIDFRAME     | If non-activation   |                      |
   3  |                      | XID3:               |                      |
   3  |                      |   DLC_XID           |                      |
   3  +----------------------+---------------------+----------------------+
   1  | Receive ICANREACH    | Send HALT_DL_NOACK  |                      |
      +----------------------+---------------------+----------------------+
DELETE| Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
      +----------------------+---------------------+----------------------+
NEW   | Receive NETBIOS_NR   | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
      +----------------------+---------------------+----------------------+
   1  | Rec TEST_CIRCUIT_REQ | Snd TEST_CIRCUIT_RSP|                      |
      +----------------------+---------------------+----------------------+
      | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
      | DLC_INFO             | Send INFOFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | DLC_XID              | If non-activation   |                      |
   3  |                      | XID3:               |                      |
   3  |                      |   Send XIDFRAME     |                      |
   3  +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

Thang Do
Novell